package do

import (
	"fmt"
	"time"

	"gorm.io/gorm"
)

type CategoryType int

const (
	CategoryType_Class = 1 // 类目, 如牙膏
	CategoryType_Level = 2 // 等级, 如一级
	CategoryType_Brand = 3 // 品牌, 如黑人
)

// 分类元信息表, 还需要关联表, 即(分类, 等级, 品牌)
type CategoryMeta struct {
	ID           int          `gorm:"primarykey"`
	Name         string       `gorm:"column:name;NOT NULL;type:varchar(32);uniqueIndex:name_category_type"`
	CategoryType CategoryType `gorm:"column:category_type;NOT NULL;type:tinyint;index;uniqueIndex:name_category_type"`
	CreatedAt    time.Time    `gorm:"autoCreateTime"`
	UpdatedAt    time.Time    `gorm:"autoUpdateTime"`
}

func (*CategoryMeta) TableName() string {
	return "category_meta"
}

func (c *CategoryMeta) BeforeSave(tx *gorm.DB) (err error) {
	if c.Name == "" {
		return fmt.Errorf("分类不能为空")
	}
	if c.CategoryType == 0 {
		return fmt.Errorf("分类类型不能为空")
	}
	return nil
}
